{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "8ddf9f79",
   "metadata": {},
   "source": [
    "加载并分割数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b25cc235",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x shape: (150, 2), y shape: (150,)\n",
      "x_1： 最小值4.30，最大值7.90，均值5.84，个数150\n",
      "x_2： 最小值2.00，最大值4.40，均值3.06，个数150\n",
      "x_train shape: (100, 2), y_train shape: (100,)\n",
      "x_test shape: (50, 2), y_test shape: (50,)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.datasets import load_iris\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "ds = load_iris()\n",
    "x, y = ds.data[:, 2:4], ds.target\n",
    "x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=1, test_size=50)\n",
    "\n",
    "print(f\"x shape: {x.shape}, y shape: {y.shape}\")\n",
    "print(f\"x_1： 最小值{x[:, 0].min():.2f}，最大值{x[:, 0].max():.2f}，均值{x[:, 0].mean():.2f}，个数{x[:, 0].shape[0]}\")\n",
    "print(f\"x_2： 最小值{x[:, 1].min():.2f}，最大值{x[:, 1].max():.2f}，均值{x[:, 1].mean():.2f}，个数{x[:, 1].shape[0]}\")\n",
    "print(f\"x_train shape: {x_train.shape}, y_train shape: {y_train.shape}\")\n",
    "print(f\"x_test shape: {x_test.shape}, y_test shape: {y_test.shape}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "40925947",
   "metadata": {},
   "source": [
    "训练并评估模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "4405aab6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "模型预测准确率（Score）：0.78\n",
      "模型预测准确率（Accuracy）：0.78\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "model = LogisticRegression()\n",
    "model.fit(x_train, y_train)\n",
    "\n",
    "mc = model.score(x_test, y_test)\n",
    "ac = accuracy_score(y_test, model.predict(x_test))\n",
    "print(f\"模型预测准确率（Score）：{mc}\")\n",
    "print(f\"模型预测准确率（Accuracy）：{ac}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "674f4cb5",
   "metadata": {},
   "source": [
    "分类预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8f5da0db",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "t1： 最小值4.00，最大值8.00，均值6.00，个数500\n",
      "t2： 最小值1.50，最大值5.00，均值3.25，个数500\n"
     ]
    }
   ],
   "source": [
    "# 导入Matplotlib与NumPy库\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.colors import ListedColormap\n",
    "import numpy as np\n",
    "# 绘制分类界面\n",
    "N, M = 500, 500  # 网格采样点的个数，采样点越多，分类界面图越精细\n",
    "t1 = np.linspace(0, 8, N)  # 生成采样点的横坐标值\n",
    "t2 = np.linspace(0, 3, M)  # 生成采样点的纵坐标值\n",
    "print(f\"t1： 最小值{t1.min():.2f}，最大值{t1.max():.2f}，均值{t1.mean():.2f}，个数{t1.shape[0]}\")\n",
    "print(f\"t2： 最小值{t2.min():.2f}，最大值{t2.max():.2f}，均值{t2.mean():.2f}，个数{t2.shape[0]}\")\n",
    "\n",
    "x1, x2 = np.meshgrid(t1, t2)  # 生成网格采样点\n",
    "x_new = np.stack((x1.flat, x2.flat), axis=1)  # 将采样点作为测试点\n",
    "y_predict = model.predict(x_new)  # 预测测试点的值\n",
    "y_hat = y_predict.reshape(x1.shape)  # 与x1设置相同的形状"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7876c701",
   "metadata": {},
   "source": [
    "画板显示"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0b38910a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "iris_cmap = ListedColormap([\"#ACC6C0\", \"#FF8080\", \"#A0A0FF\"])  # 设置分类界面的颜色\n",
    "plt.pcolormesh(x1, x2, y_hat, cmap=iris_cmap)  # 绘制分类界面\n",
    "# 绘制3种类别鸢尾花的样本点\n",
    "plt.scatter(x[y == 0, 0], x[y == 0, 1], s=30, c=\"g\", marker=\"^\")  # 绘制标签为0的样本点\n",
    "plt.scatter(x[y == 1, 0], x[y == 1, 1], s=30, c=\"r\", marker=\"o\")  # 绘制标签为1的样本点\n",
    "plt.scatter(x[y == 2, 0], x[y == 2, 1], s=30, c=\"b\", marker=\"s\")  # 绘制标签为2的样本点\n",
    "# 设置坐标轴的名称并显示图形\n",
    "plt.rcParams[\"font.sans-serif\"] = \"Simhei\"\n",
    "plt.xlabel(\"花瓣长度\")\n",
    "plt.ylabel(\"花瓣宽度\")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "ml-241",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.20"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
